package hot100;

import java.util.HashMap;
import java.util.Map;

public class setZeroes2 {
    public void setZeroes(int[][] matrix) {
        //采用hashMap记录为0的行数和列数
        int n = matrix.length;
        int m = matrix[0].length;
        boolean[] row = new boolean[m];
        boolean[] col = new boolean[n];
        for(int i = 0;i < n;i++) {
            for(int j = 0;j < m;j++) {
                if(matrix[i][j] == 0) {
                    row[j] = col[i] = true;
                }
            }
        }
        //遍历矩阵 遇到行数和列数存在的就置为0
        for(int i = 0;i < n;i++) {
            for(int j = 0;j < m;j++) {
                if(row[j] ||col[i]) {
                    matrix[i][j] = 0;
                }
            }
        }
    }
    public void setZeroes1(int[][] matrix) {
        //采用hashMap记录为0的行数和列数
        int n = matrix.length;
        int m = matrix[0].length;
        Map<Integer,Integer> hash = new HashMap<>();
        for(int i = 0;i < n;i++) {
            for(int j = 0;j < m;j++) {
                if(matrix[i][j] == 0) {
                    //记录行
                    hash.put(i,hash.getOrDefault(i,0) + 1);
                    //记录列
                    hash.put(j,hash.getOrDefault(j,0) + 1);
                }
            }
        }
        //遍历矩阵 遇到行数和列数存在的就置为0
        for(int i = 0;i < n;i++) {
            for(int j = 0;j < m;j++) {
                if(hash.containsKey(i) || hash.containsKey(j)) {
                    matrix[i][j] = 0;
                }
            }
        }
    }
}
